不知不覺也前進第15天了,時間過得真快呢~
那前面我們已經看完了Topic這個溝通方式,現在就換到下一個 - Service囉!Service於我的感覺像是web裡面的打API,像是topic會有publisher和subscriber,與service對應的是server和client,這兩者可以透過service進行溝通,所以就是client發送request給server,server再回傳對應的response給client,我覺得原理比topic簡單 XD
畫個示意圖跟topic比較一下,我想有寫過web相關技術的人應該都會很熟悉才對:
(請原諒小妹拙劣的繪圖技巧)
可以看到topic傳的是同一個message訊息,其實就是publisher發佈出來的訊息啦!
但是service送的是一組訊息,也就是request/response,server會針對不同的request做出回應。
service跟topic的溝通方式比較:
topic 的publisher和subscriber可以多對多,但是service內的server只能一對多個client。topic 的subscriber是採用持續監聽的方式,不會因為收到一行訊息就中止;service一次就是收一條request,再回傳一條response回去。那麼,了解server的原理後,接下來幾天就是不免俗的來製作server和client吧!
ROS Tutorials - Understanding Services
ROS wiki - Services